// Package redis
// Author liuzhiyong
// Date 2023/11/20
// Description redis 配置
package redis

import (
	"context"
	"fmt"
	"gitee.com/liu_zy_developer/go_stock_service/config"
	"github.com/go-redsync/redsync/v4"
	"github.com/go-redsync/redsync/v4/redis/goredis/v9"
	"github.com/redis/go-redis/v9"
)

var Rs *redsync.Redsync

// Init 初始化redis客户端和分布式锁
func Init(cfg *config.RedisConfig) error {
	client := redis.NewClient(&redis.Options{
		Addr:     fmt.Sprintf("%s:%d", cfg.Host, cfg.Port),
		Password: cfg.Password, //密码
		DB:       cfg.DB,       // 数据库
		PoolSize: cfg.PoolSize, //连接池大小
	})
	// 判断redis是否连接成功
	err := client.Ping(context.Background()).Err()
	if err != nil {
		return nil
	}
	// 基于Redis的连接创建redsync obj
	pool := goredis.NewPool(client)
	Rs = redsync.New(pool)
	return nil
}
